﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>程序的使用 | AutoHotkey v2</title>
<meta name="description" content="Learn details about creating, editing and running a script, the tray icon, the main window, command line usage, portability and installer options." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="static/theme.css" rel="stylesheet" type="text/css" />
<script src="static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>程序的使用</h1>
<p>AutoHotkey 程序本身不做任何事情; 它需要一个脚本来告诉它该做什么. 脚本只是一个简单的以 <code>.ahk</code> 作为扩展名的文本文件, 其中包含了程序的指令, 像配置文件, 但功能更强大. 一个脚本可以执行一个动作然后退出, 但大多数脚本定义了一些<a href="Hotkeys.htm">热键</a>, 当热键按下时, 热键后面跟着的一个或多个动作将会执行.</p>
<pre>#z::运行 "https://www.autohotkey.com"  <em>; Win+Z</em>

^!n::  <em>; Ctrl+Alt+N</em>
{
    如果 窗口存在(&quot;无标题 - 记事本&quot;)
        激活窗口
    否则
        运行 "Notepad"
}</pre>
<p><strong>提示:</strong> 如果您的浏览器支持, 当你将鼠标悬停在代码块上面时, 您可以通过点击代码块右上角的按钮来下载任何代码块(如上面的代码块) 作为脚本文件.</p>

<h2 id="Table_of_Contents">目录</h2>
<ul>
  <li><a href="#create">创建脚本</a></li>
  <li><a href="#edit">编辑脚本</a></li>
  <li><a href="#run">运行脚本</a></li>
  <li><a href="#tray-icon">托盘图标</a></li>
  <li><a href="#main-window">主窗口</a></li>
  <li><a href="#cmd">命令行用法</a></li>
  <li><a href="#portability">AutoHotkey.exe 的可移植性</a></li>
  <li><a href="#install">安装选项</a>
  <ul>
    <li><a href="#Installer_uiAccess">以 UI 访问权限运行</a></li>
  </ul></li>
</ul>

<h2 id="create">创建脚本</h2>
<p>有几种常见的方法来创建脚本文件:</p>
<ul>
  <li>在记事本(或你选择的<a href="commands/Edit.htm#Editors">文本编辑器</a>) 中, 使用 <code>.ahk</code> 文件扩展名保存文件. 在某些系统上, 您可能需要将文件名用引号括起来, 以确保编辑器不会添加其他扩展名(例如 .txt).</li></ul>
<p class="note">如果文件包含非 ASCII 字符, 请确保将文件保存为带有 BOM(字节顺序标记) 的 UTF-8. 有关详情, 请参阅<a href="FAQ.htm#nonascii">常见问题(FAQ)</a>.</p>
<ul>
  <li>在资源管理器, 希望保存脚本的文件夹中的空白区域右键单击, 然后选择 <strong>新建</strong> 和 <strong>AutoHotkey Script</strong>. 然后, 您可以输入脚本的名称(注意, 如果 <code>.ahk</code> 扩展名可见时, 请不要删掉它).</li>
</ul>
<p class="note">有关如何编写脚本的详细信息, 请参阅<a href="Language.htm">脚本语言</a>.</p>

<h2 id="edit">编辑脚本</h2>
<p>要打开脚本进行编辑, 请右键单击脚本文件, 然后选择 <strong>Edit Script(编辑脚本)</strong>. 如果脚本已经在运行, 您可以使用 <a href="commands/Edit.htm">Edit(编辑)</a> 函数或右键单击脚本的<a href="#tray-icon">托盘图标</a>并选择 <strong>Edit This Script(编辑此脚本)</strong>. 默认情况下, 这将打开记事本, 但可以通过写入注册表来更换编辑器, 如<a href="commands/Edit.htm#ExDefaultEditor">此例</a>所示. 当然, 您可以先打开文本编辑器, 然后像打开其他任何文本文件一样打开脚本.</p>
<p>编辑脚本保存后, 您必须运行或 <a href="commands/Reload.htm">重载(重新加载)</a> 脚本以使更改生效. 正在运行的脚本通常可以通过其<a href="#tray-icon">托盘菜单</a>重新加载.</p>

<h2 id="run">运行脚本</h2>
<p>安装了 AutoHotkey 后, 有几种运行脚本的方法:</p>
<ul>
<li>双击资源管理器中的脚本文件(或脚本文件的快捷方式).</li>
<li>在命令行中调用 AutoHotkey.exe, 并将该脚本的文件名(路径) 作为<a href="Scripts.htm#cmd">命令行参数</a>.</li>
<li>创建 <a href="Scripts.htm#defaultfile">the default script(默认脚本)</a> 后, 通过 "开始" 菜单中的快捷方式启动 AutoHotkey 以运行它.</li>
<li>如果 AutoHotkey 固定在 Windows 7 或更高版本系统的任务栏或 "开始" 菜单上, 则可以通过程序跳转列表打开最近的或已固定的脚本.</li>
</ul>
<p>大多数脚本只有在运行时才会起作用. 使用<a href="#tray-icon">托盘菜单</a>或 <a href="commands/ExitApp.htm">退出应用</a> 函数退出脚本. 当 Windows 关闭时, 脚本也被迫退出. 要将脚本配置为在用户登录后自动启动, 最简单的方法是在 <a href="Variables.htm#Startup">Startup(启动)</a> 文件夹中放置脚本文件的快捷方式.</p>
<p>脚本也可以<a href="Scripts.htm#ahk2exe">编译</a>; 即与 AutoHotkey 二进制文件结合在一起, 形成一个独立的可执行(.exe) 文件.</p>

<h2 id="tray-icon">托盘图标</h2>
<p>默认情况下, 每个脚本都将自己的图标添加到任务栏通知区域(通常称为托盘).</p>
<p>托盘图标通常如下所示(但脚本 <a href="commands/Pause.htm">paused(暂停)</a> 或 <a href="commands/Suspend.htm">suspended(挂起)</a> 时颜色或字母会更改): <img src="static/ahk16.png" alt="H"></p>
<p>右键单击托盘图标以显示托盘菜单, 默认情况下具有以下选项:</p>
<ul>
<li>Open - (打开) - 打开脚本的<a href="#main-window">主窗口</a>.</li>
<li>Help - (帮助) - 打开 AutoHotkey 离线帮助文件.</li>
<li>Window Spy - (窗口监视器) - 显示关于窗口的各种信息.</li>
<li>重载 This Script - (重载这个脚本) - 请参阅 <a href="commands/Reload.htm">重载</a>.</li>
<li>Edit This Script - (编辑这个脚本) - 请参阅 <a href="commands/Edit.htm">Edit</a>.</li>
<li>挂起 Hotkeys - (挂起热键) - <a href="commands/Suspend.htm">挂起</a> 或取消挂起热键.</li>
<li>暂停 Script - (暂停脚本) - <a href="commands/Pause.htm">暂停</a> 或取消暂停脚本.</li>
<li>退出 - (退出) - 退出脚本.</li>
</ul>
<p>默认情况下, 双击托盘图标显示脚本的<a href="#main-window">主窗口</a>.</p>
<p>可以自定义托盘图标和菜单的行为和外观:</p>
<ul>
  <li><a href="Variables.htm#TrayMenu">内_托盘菜单</a> 返回 <a href="objects/Menu.htm">Menu 对象</a>, 可以用来自定义托盘菜单.</li>
  <li><a href="Variables.htm#IconHidden">内_隐藏图标</a> 或 <a href="commands/_NoTrayIcon.htm">#无托盘图标</a> 指令可用于隐藏(或显示) 托盘图标.</li>
  <li><a href="Variables.htm#IconTip">内_图标提示</a> 可以为托盘图标分配新的工具提示文本.</li>
  <li><a href="commands/TraySetIcon.htm">设置托盘图标</a> 可以用来改变图标.</li>
</ul>

<h2 id="main-window">主窗口</h2>
<p>脚本的主窗口通常是隐藏的, 但可以通过<a href="#tray-icon">托盘图标</a>或下面列出的函数之一显示, 以获得对调试脚本有用的信息. <strong>View</strong> 菜单下的项目控制主窗口显示的内容:</p>
<ul>
<li>Lines most recently executed - (最近执行的行) - 请参阅 <a href="commands/ListLines.htm">记录列表</a>.</li>
<li>Variables and their contents - (变量和它们的内容) - 请参阅 <a href="commands/ListVars.htm">变量列表</a>.</li>
<li>Hotkeys and their methods - (热键和它们的方法) - 请参阅 <a href="commands/ListHotkeys.htm">热键列表</a>.</li>
<li>Key history and script info - (按键历史和脚本信息) - 请参阅 <a href="commands/KeyHistory.htm">按键记录</a>.</li>
</ul>
<p><strong>已知问题:</strong> 当脚本显示 <a href="commands/MsgBox.htm">信息框</a> 或其他对话框时, 菜单项下的键盘快捷键不起作用.</p>
<p>内置变量 <a href="Variables.htm#ScriptHwnd">内_脚本句柄</a> 包含脚本主窗口的唯一 ID(HWND).</p>
<p id="title"><a href="commands/_SingleInstance.htm">#单例模式</a> 和 <a href="commands/Reload.htm">重载</a> 机制使用此窗口的标题来标识同一脚本的其他实例. <a href="commands/WinSetTitle.htm">更改标题</a>可防止脚本被这样识别. 默认标题等同于表达式 <code>内_脚本全路径 (内_是否已编译 ? "" : " - AutoHotkey v" 内_主程序版本)</code>.</p>
<p>用 <a href="commands/WinClose.htm">关闭窗口</a>(甚至从另一个脚本或其他程序) 关闭这个窗口会导致脚本退出, 但大多数其他方法只是隐藏窗口并保持脚本运行.</p>

<h2 id="cmd">命令行用法</h2>
<p>有关命令行用法, 请参阅<a href="Scripts.htm#cmd">向脚本传递命令行参数</a>, 其中包括影响程序行为的命令行开关列表.</p>

<h2 id="portability">AutoHotkey.exe 的可移植性</h2>
<p>运行任何的 .ahk 脚本所需要的只是 AutoHotkey.exe 文件.</p>
<p>重命名 AutoHotkey.exe 会同时改变它<a href="Scripts.htm#defaultfile">默认</a>运行的脚本, 这是在没有安装 AutoHotkey 的计算机上运行脚本的一种可选方法. 例如, 在没有指定文件名时, 执行 <i>MyScript</i>.exe 会自动运行 <i>MyScript</i>.ahk, 但也能运行其他脚本.</p>

<h2 id="install">安装选项</h2>
<p class="warning"><strong>注意:</strong> 目前还没有 v2.0-alpha 的标准安装程序.</p>
<p>要静默安装 AutoHotkey 到默认目录(这与手动安装时显示的目录相同), 需要向安装程序传递 /S 参数. 例如:</p>
<pre>AutoHotkey110800_Install.exe /S</pre>
<p>使用参数 /D 可以指定默认目录外的其他目录作为安装目录(如果没有使用 /S, 那么这样可以改变在安装程序中显示的默认目录). 例如:</p>
<pre>AutoHotkey110800_Install.exe /S /D=C:\Program Files\AutoHotkey</pre>
<p><strong>Version(版本)</strong>: 如果之前已经安装了 AutoHotkey, 则安装程序会自动检测 AutoHotkey.exe 的构建并设置为默认构建. 否则, 根据操作系统是否为 64 位设置默认构建为 Unicode 32 位或 Unicode 64 位. 要覆盖 AutoHotkey.exe 的默认构建设置, 请使用下列的其中一个开关:</p>
<ul>
  <li><code>/A32</code> 或 <code>/ANSI</code>: ANSI 32 位.</li>
  <li><code>/U64</code> 或 <code>/x64</code>: Unicode 64 位(仅在 64 位系统中有效).</li>
  <li><code>/U32</code>: Unicode 32 位.</li>
</ul>
<p>例如, 下面的命令会静默安装并设置 ANSI 32 位为默认的构建:</p>
<pre>AutoHotkey110800_Install.exe /S /A32</pre>
<p><strong>Uninstall(卸载)</strong>: 要静默卸载 AutoHotkey, 需要向 Installer.ahk 传递 <code>/Uninstall</code> 参数. 例如:</p>
<pre class="no-highlight">"C:\Program Files\AutoHotkey\AutoHotkey.exe" "C:\Program Files\AutoHotkey\Installer.ahk" /Uninstall</pre>
<p><strong>注意:</strong> Installer.ahk 需要管理员权限才能正常运行.</p>
<p><strong>Extract(提取解压)</strong>:  以后版本的安装包在右下角包含了用来提取安装文件而不进行安装的链接. 如果存在这个功能, 则可以在命令行中使用 <code>/E</code> 开关来调用它. 例如:</p>
<pre>AutoHotkey110903_Install.exe /D=F:\AutoHotkey /E</pre>
<p><strong>Restart scripts(重启脚本)</strong>: 在静默安装/卸载模式中, 运行中的脚本可能会自动关闭. 通过传递 <code>/R</code> 参数, 可自动用之前运行时对应的 EXE 版本重启脚本, <strong>无需</strong>其他命令行参数. 安装器将尝试通过 资源管理器(Explorer) 启动脚本, 所以当 用户账户控制(UAC) 开启的情况下, 脚本不会以管理员权限运行.</p>

<p id="Installer_IsHostApp"><strong>任务栏按钮</strong>: 在 Windows 7 及更高版本, 默认情况下, 任务栏的多个按钮将会组合为一个或一组. 而 <em>分隔任务栏按钮</em> 选项可关闭这个特性, 其原理是通过注册每一个 AutoHotkey 可执行文件为<a href="https://msdn.microsoft.com/en-us/library/ee872121#APPLICATIONS">宿主程序(IsHostApp)</a>.</p>
<p>从命令行安装时, 设置 <code>/IsHostApp</code> 或 <code>/IsHostApp=1</code> 开启这个选项, 而设置 <code>/IsHostApp=0</code> 则是关闭.</p>

<h3 id="Installer_uiAccess">以 UI Access 运行</h3>
<p>安装器界面上有个 "增加 '运行 with UI Access'(以 UI Access 运行) 到上下文菜单" 选项. 这个上下文菜单选项提供解决通常会遇到的 <a href="FAQ.htm#uac">UAC 的相关问题</a>, 它可让脚本自动管理程序权限, 且无需以管理员权限运行. 安装器实现该功能的方法是:</p>
<ul>
  <li>复制 AutoHotkeyA32.exe, AutoHotkeyU32.exe 或 AutoHotkeyU64.exe(当前选择的版本) 为 AutoHotkey*_UIA.exe.</li>
  <li>在每个 UIA 文件的嵌入式清单(manifest) 中设置 <a href="https://msdn.microsoft.com/en-us/library/ee671610">uiAccess 属性</a>.</li>
  <li>创建名为 "AutoHotkey" 的自签名数字证书, 然后签名每个 UIA 文件.</li>
  <li>注册上下文菜单选项来运行对应的 exe 文件.</li>
</ul>
<p>对应安装之前就存在的 UIA 文件, 无论是否开启了 UI Access 选项, 安装器都会自动升级它们.</p>
<p>对于命令行安装方式, 指定 <code>/uiAccess</code> 或 <code>/uiAccess=1</code> 来开启选项, 设为 <code>/uiAccess=0</code> 则是关闭. 如果系统的 UAC(用户账户控制) 为开启的且 UI Access 上下文选项在安装之前已经注册过时, 安装器将默认开启这个选项.</p>
<p>脚本可以以 UI access 方式运行其他的脚本, 只需要简单的 <a href="commands/Run.htm">运行</a> 对应的 UIA.exe 文件加上<a href="#cmd">命令行参数</a>即可.</p>
<p><strong>已知限制</strong>:</p>
<ul>
  <li>UIA 只会影响信任区域的文件; 比如 Program Files 的子目录.</li>
  <li>如果没有注册程序发布者用于签名的数字证书, 那么 UIA.exe 文件不能在其他计算机上运行.</li>
  <li>由于安全限制, UIA.exe 文件无法通过 CreateProcess 启动. 不过可以用 ShellExecute 替代. 内置的 <a href="commands/Run.htm">运行</a> 命令将会自动尝试以这两种方式运行.</li>
  <li>UIA.exe 文件不可修改, 否则无法通过文件的数字签名验证.</li>
  <li>由于 UIA 程序和其他程序具有不同的 "integrity level(可信级别)", 它们仅可通过其他的 "UIA 程序" 来注册对象. 比如, <code><a href="commands/ComObjActive.htm">组件对象激活</a>("Word.Application")</code> 将会失败, 因为 Word 并不是一个 UI Access 标记的程序.</li>
  <li>由于安全限制, 脚本自身的窗口无法自动视为 "无 UIA 程序或脚本".</li>
  <li>运行使用鼠标钩子的 "非 UIA 脚本" 时(类似简单的出现了 <code>#安装鼠标钩</code> 指令), 鼠标热键会在由 UIA 脚本创建的窗口中失效, 即使热键为 "UIA 脚本" 自身定义的. 可行的解决办法是: 确保 "UIA 脚本" 最后一个加载.</li>
</ul>
<p>有关详情, 请参阅 <a href="https://www.autohotkey.com/board/topic/70449-enable-interaction-with-administrative-programs/">Enable interaction with administrative programs</a> 论坛存档贴</p>

</body>
</html>